#pragma once
#include <wrl/client.h>
#include <QMessageBox>
#include <QDebug>

// 使用模板别名(C++11)简化类型名
template <class T>
using ComPtr = Microsoft::WRL::ComPtr<T>;

#ifndef HR
#define HR(x)												\
	{															\
		HRESULT hr = (x);										\
		if(FAILED(hr))											\
		{														\
			qDebug() << "Critical " << QString("file[%1]line[%2]").arg(__FILEW__).arg(__LINE__);\
		}														\
	}
#endif

// 安全COM组件释放宏
#define SAFE_RELEASE(p) { if ((p)) { (p)->Release(); (p) = nullptr; } }